package com.atwulidun.singleton01.hungryman1.type2;

// 方式一：饿汉式(静态代码块)
public class Singleton {
    public static void main(String[] args) {
        // 证明两次获取到的是同一个对象
        Singleton instance1 = Singleton.getInstancee();
        Singleton instance2 = Singleton.getInstancee();
        System.out.println(instance1 == instance2);

        // 用hashCode来证明两次获取到的是同一个对象
        System.out.println("instance1.hashCode = " + instance1.hashCode());
        System.out.println("instance2.hashCode = " + instance2.hashCode());
    }

    // 1.首先将构造器私有化
    private Singleton() {

    }

    // 2.内部将Singleton实例化
    private static Singleton instance;
    // 用静态代码块的方式来实例化
    static {
        instance = new Singleton();
    }

    // 3.对外提供一个静态的公有方法以获取该实例对象
    public static Singleton getInstancee() {
        return instance;
    }
}
